#ifndef ITEM_HH
#define ITEM_HH

#include "../include/ICharacter.hh"
#include <string>

namespace Game {
    class Item {
    public:
        enum Type { HEALTH_POTION, SWORD, SHIELD, POISON_DAGGER, MAGIC_RING, DRAGON_SCALE };
        //Canonical Form
        Item();
        Item(const std::string& name, int healthBoost, int attackBoost, int defenseBoost, Type type);
        Item(const Item& other);
        Item& operator=(const Item& other);
        ~Item() = default;

        void apply(ICharacter& character) const;
        std::string getName() const;
        int getHealthBoost() const;
        int getAttackBoost() const;
        int getDefenseBoost() const;
        Type getType() const;

    private:
        std::string name_;
        int healthBoost_;
        int attackBoost_;
        int defenseBoost_;
        Type type_;
    };
}

#endif